Developers of applications for computing devices, such as smart phones, tablets or other devices, typically create multiple versions of their applications to support the different computing device platforms. In particular, different platforms have different interfaces, such as different screen sizes, different screen proportions, different screen resolution, and different input mechanisms such as touch-screens, keyboards, and buttons, among others. Each version of each application must be tailored to the specific requirement of each platform.
This process of customization is labor-intensive and error-prone, as it is customary to size and position interface components through programming code, and to compile a new executable file for each platform. As the number of platforms increases, the complexity of this problem increases, as do the possibilities for an error to escape quality-control processes.